"""
@Author  : 康帅
@Time    : 2021/3/22 14:58
@Function: 自定义类实现Iterable和Iterator的功能
"""

from collections import Iterable, Iterator


"""
要使自定义的类具有Iterable属性，需要实现__iter__方法。
要使自定义的类具有Iterator属性，需要实现__iter__和__next__方法
"""


class NumberSequence:
    """ 生成一个间隔为step的数字系列 """

    def __init__(self, init, step, max=100):
        self.__data = init
        self.__step = step
        self.__max = max

    def __iter__(self):
        return self

    def __next__(self):
        if self.__data < self.__max:
            tmp = self.__data
            self.__data += self.__step
            return tmp
        else:
            raise StopIteration


if __name__ == '__main__':
    num_seq = NumberSequence(0, 5, 20)
    print(isinstance(num_seq, Iterable))
    print(isinstance(num_seq, Iterator))
    for n in num_seq:
        print(n, end="\t")
